The present invention relates to installing software components and presenting the location of these components to a requesting application, and more particularly, to categorizing, accessing and installing components and sending the location of a selected component to a requesting application.
Software modules need to be installed in a computer system before they can be used by an application program or the computer""s operating system. Because of the size of current programs, software developers often do not ship their software product in an executable format. This is the case because the executable format typically takes up more space and thus requires additional storage in order to ship the product. It is more efficient to use one of the known various installation techniques that have the effect of compressing the software product in order achieve storage space efficiency.
A software product may comprise xe2x80x9cfeaturesxe2x80x9d and xe2x80x9ccomponents.xe2x80x9d Each software product is made up of one or more features. A feature is a granular piece of the software product that a user may choose to install or execute. Features typically correspond roughly to the functional features of the software product itself. A component is a collection of resources, such as files or registry keys, that are all installed or uninstalled as a unit. Components are the building blocks of the software product that are not exposed to the user.
Once a software product is installed onto a computer system, it may be broken up into several modules or components so that the application or operating system may access only those modules or components that are needed. The location of these several components need to be tracked so that an application or an operating system will know where to access these components. The tracking of these software components is generally performed during the initial installation of the software product. However, after initial installation, the tracking of the component is no longer updated. Therefore, in the instance where the location of the component is overwritten or lost inadvertently, a complete reinstall of the software product needs to be performed in order to retrieve that lost component.
In addition, many software components are related to other software components because of the function they perform. For example, there may be multiple instances of software components related to different languages supported by the user interface. While the user interface language supported by the components is different, the similarity is that all these types of components are related in that they affect the language of the user interface. It is advantageous for application programs or operating systems to categorize related components so that when a need arises for a specific function, such as selecting a user interface language, the application or operating system can access all related components that perform that function quickly. However, as stated above, in the event one of the categorized components can not be found or has been overwritten, then a full reinstall must be performed for the software product in order to retrieve that component.
Therefore, there exists a need in the art for a program that can categorize related components and, in the event a component cannot be found or is overwritten, then to install only the portions of the software product necessary to retrieve the component.
The present invention satisfies the above described need by providing a method to categorize related components, detect whether the component is installed and to install the component in the event it is not installed. The present invention creates an additional field to attach to the component providing a way to categorize related components. In addition, the present invention utilizes an Installer Registry to track the location of installed components. In the event the component has not been installed, the present invention will install the smallest installable unit possible in order that the component can then be accessible by the application.
Categorizing and installing a component on demand is beneficial for several reasons. First, by categorizing components, an application or other process may request all related components by using a qualifier submitted to the installer. This increases the efficiency of the application or process by reducing the number of searches required to find related components.
Second, by breaking up the software product into smaller installable units, the installer can install-on-demand only those smaller installable units that are required by the application or process. This also increases efficiency by not requiring a complete install of a software product when only a component is needed. This prevents the application from having to wait for a complete software product install, and it saves the computer resources by not requiring them to be dedicated to a complete software product install.
In general, the present invention is directed towards a generic way of publishing globally available functionality that can be shared across applications. More specifically, the present invention is used to access categories of components, which may be used by multiple applications, that may or may not require installation. Thus an application can retrieve multiple components belonging to the same category.
Qualified components contain a qualifier, and a category ID, that are used to identify related components. A category ID is a text string, identifying a category, that is established by the installation application. Qualified components use these identifiers to map to real, non-qualified components, hence providing one level of indirection to the component. By using qualified components, an application can request all components related to a specific category, such as file conversion types or languages supported by the feature. The present invention will also detect whether the component is installed and if not, will install the feature having the component. Whether the component is installed or not by the present invention, a keypath, indicating where the component is located, is returned to the application.
To perform the present invention, an Installer, an Installation Registry, Descriptors and a Publish Component table are utilized. The Installation Registry contains a listing of the products, associated features and components used by the features. In the case where the component is installed, the registry will contain a keypath designating the location of where the component is located. Descriptors are structures containing a product, feature and component information. This information is used to generate a token located in the Installer Registry. The Publish Component Table contains a qualifier, a feature and a category field. In addition, the Publish Component Table may contain an AppData field. The category field is a string that identifies the category of the component being qualified. The feature and category fields provide the information for installing the component referred to by this qualifier. Both feature and component fields are necessary because it is the feature that owns the component that must be installed, a component cannot be installed by itself. When used, the AppData field may contain a descriptive string used to further describe the component.